package projeto.administrativo.servico.cih;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.zkoss.zkplus.spring.SpringUtil;

import nucleo.comuns.visao.NucleoTab;
import plataforma.base.cdp.ExcecaoRegraNegocio;
import plataforma.crudestatico.cih.FormularioDadosCRUDEstatico;
import plataforma.crudestatico.cih.FormularioDadosCRUDEstatico.ModoExibicao;
import projeto.administrativo.atividade.cdp.KAtividade;
import projeto.administrativo.atividade.cgd.DaoKAtividade;
import projeto.administrativo.servico.cdp.KServico;
import projeto.administrativo.servico.cgt.ServiceKServico;
import projeto.ramoAtividade.cdp.RamoAtividade;
import projeto.ramoAtividade.cgd.DaoRamoAtividade;

public class FormDadosKServico extends FormularioDadosCRUDEstatico<KServico> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3825624799729224189L;
	AbaDadosKServico abaKServico;
	AbaKAtividade abaKAtividade;

	@Override
	protected List<NucleoTab> definirTabs() {

		List<NucleoTab> listaTabs = new ArrayList<NucleoTab>();
		abaKServico = new AbaDadosKServico();
		abaKAtividade = new AbaKAtividade();

		listaTabs.add(abaKServico);
		listaTabs.add(abaKAtividade);

		return listaTabs;
	}

	@Override
	protected void preencherDadosObjeto(KServico objeto) {

		objeto.setDescricao(abaKServico.getCampoDescricao().getValue());
		objeto.setCategoria(abaKServico.getCategoriaServico());
		objeto.setValorPadrao(abaKServico.getCampoValorVenda().getValorDecimal());
		ServiceKServico service = (ServiceKServico) this.getControlador().getServiceCrud();
		List<KAtividade> katividades = abaKAtividade.getKAtividades();
		service.ordenarKAtividades(objeto, katividades);
		//objeto.setConjuntoOrdem(conjuntoOrdem);
		//objeto.setkAtividades(abaKAtividade.getSetKAtividade());

	}

	@Override
	protected void preencherDadosTela(KServico objeto)
			throws ExcecaoRegraNegocio {

		abaKServico.getCampoDescricao().setValue(objeto.getDescricao());
		abaKServico.campoDescricao.setFocus(true);
		abaKServico.campoDescricao.focus();
		abaKServico.setCategoriaServico(objeto.getCategoria());
		abaKServico.getCampoValorVenda().setValorDecimal(objeto.getValorPadrao());

		// dados KAtividade
		DaoKAtividade daoKAtividade = SpringUtil.getApplicationContext()
				.getBean(DaoKAtividade.class);
		List<KAtividade> todasKAtividades = daoKAtividade
				.recuperarTodosAtivoComOrdenacao("descricao");

		abaKAtividade.setKAtividadeOrdenadas(objeto.getOrdens(), todasKAtividades);

	}

	public void configurarExtensao() {
		if (getModoExibicao() == ModoExibicao.NOVO) {

			// KAtividades
			DaoKAtividade daoKAtividade = SpringUtil.getApplicationContext()
					.getBean(DaoKAtividade.class);
			List<KAtividade> todasKAtividades = daoKAtividade
					.recuperarTodosAtivoComOrdenacao("descricao");

			abaKAtividade.setKAtividadeOrdenadas(getObjetoCadastroDados()
					.getOrdens(), todasKAtividades);

		}

	}

	@Override
	protected void configurarConstraints() {
		abaKServico.campoDescricao.setConstraint("no empty");
	}

	@Override
	public boolean isValid() {
		return abaKServico.isValid();
	}
}
